#ifndef __EULER_OPERATORS_H__
#define __EULER_OPERATORS_H__

#include "solid.h"

class EulerOperators{
    public:
        EulerOperators();
        ~EulerOperators();

        Solid *mvfs(Point);
//        void kvfs();
        void lmev(Solid *, HalfEdge *, HalfEdge *, Point);
        void mev(Solid *, Face *, Face *, Vertex *, Vertex *, Vertex *, Point);
        void mev(Solid *, Face *, Vertex *, Vertex *, Point);
//        void kev();
        void lmef(Solid *, HalfEdge *, HalfEdge *);
        void mef(Solid *, Face *, Vertex *, Vertex *);
//        void kef();
//        kemr();
//        melr();
        void sweep(Face *, Point);
        HalfEdge *addHE(Edge *, Vertex *, HalfEdge *, bool);
        HalfEdge *findHE(Face *, Vertex *, Vertex *);

    private:
        unsigned int idSolid;
        unsigned int idFace;
        unsigned int idLoop;
        unsigned int idEdge;
        unsigned int idHalfEdge;
        unsigned int idVertex;
};

#endif
